Many consumer electronic devices common to everyday use derive much of their utility from the manner in which they interact with users and the manner in which they implement their function. Users have become quite accustomed to intelligent devices and machines and their ease of use and functionality. Increasingly, an embedded digital processing system underlies this ease of use and functional capability. These systems are referred to as embedded because, unlike a discreet, stand-alone digital processing system (e.g., a personal computer), they are usually dedicated to a specific set of related functions as opposed to being general purpose. An embedded digital processing system of a device executes software code designed specifically for implementing the functionality of the device.
An embedded digital processing system (hereinafter embedded system) is usually considered an integral part of the device in which it is included. Within more complex devices, there may be a very powerful embedded system, capable of executing many of millions of instructions per second. A modern digital camera is one example of such a device.
A typical modern digital camera is very similar in size and behavior to conventional point-and-shoot cameras. The digital camera usually includes an imaging device, user interface displays, mode control indicators, and the like, which are controlled by an embedded system running a software program. When an image is captured, the imaging device is exposed to light and generates raw image data representing the image, the embedded system compresses the image, and the image is stored in memory for archiving or later review: The digital camera supports many different functions and many different operating modes for capturing images, reviewing images, and the like. Each of these functions and modes is implemented by the specialized hardware of the digital camera and specific specialized software functions executing on the digital camera's embedded system.
Prior Art FIG. 1 shows a typical embedded system 100. Embedded system 100 includes a processor 101, a RAM (random access memory) 102, an I/O (input-output) unit 103, a ROM (read only memory) 104, controlled equipment 105, and a removable memory 106, each respectively coupled via a bus 110.
The functionality and operating characteristics of embedded system 100 are largely determined by processor 101 and controlled equipment 105, as processor 101 executes software stored in ROM 104 and RAM 102 and controls the operation of controlled equipment 105. For example, in the case of a digital camera, controlled equipment 105 would include a digital imaging device, mode control indicators, user interface displays, and the like.
Referring now to Prior Art FIG. 2, a memory diagram of the software contents of ROM 104 and RAM 102 is shown. Typically, as shown in FIG. 2, the camera system code 203 (e.g., operating system software and its associated data structures, resources, etc.) is stored as compressed code 201 in non-volatile ROM 104. At boot time, or power-up, boot code 202 executes, decompresses compressed code 201 into camera system code 203 and loads camera system code 203 into RAM 102. Boot code 202 also sets up and initializes working memory area 204, buffers 205 (e.g., typically comprising a display buffer and a draw buffer), and a capture buffer 206.
Most digital cameras execute their operating system software from ROM. This provides the advantage of conserving the amount of RAM needed for nominal functionality. However, for speed and responsiveness reasons, the more performance-oriented digital cameras are configured to run their operating system software (e.g., camera system code 203) from RAM 102 as opposed to ROM 104. This is due to the fact that RAM (e.g., SDRAM, DRAM, EDO RAM) is much faster than ROM or EEPROM. RAM, however, is volatile, and therefore does not maintain its contents after power-off. Consequently, these digital cameras and other performance-oriented types of embedded system consumer electronic devices transfer a compressed image of their system code from a non-volatile ROM to a faster RAM at power up. The system code then executes from RAM.
There is a problem, however, in the fact that, while faster, RAM is more expensive than ROM. As modern consumer electronics devices increase in functionality and sophistication, even the most inexpensive device will include one or more embedded systems to enhance the interface with the user or to accomplish more elaborate functions. Hence, it becomes important to reduce the cost of these embedded systems as much as possible.
Thus, what is required is a method and system for implementing complex functionality in a consumer electronics device as inexpensively as possible. What is needed is a system which reduces the amount of expensive RAM needed in the embedded system of a device. The required system should maintain the speed and responsiveness while reducing the amount of RAM used in the device. The present invention provides a novel solution to the above requirements.